﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//7.数组作为函数参数时，可以退化成指针；
//8.在传递数组时，需要加上数组的个数；

//void print(int* arr)
void print89(int* arr, int len)
{
	//2.函数参数中，如果有数组，都会转化为指针。则sizeof(arr)==sizeof(int*)，值为4。所以，此时求出来的
		//值4，不能作为数组的循环条件存在；
	//for (int i = 0; i < sizeof(arr); i++)
	for (int i = 0; i < len; i++)
	{
		//printf("1.输出数组arr的值，sizeof(arr)是一个int*指针类型的大小4，故只能输出4个数：%d\n", arr[i]);//1 2 3 4
		printf("3.输出数组arr的值，此时多了一个数组长度len的参数：%d\n", arr[i]);//1 2 ... 9 10
	}
}

//main89&90：数组转化成指针和字符串分别作为函数参数
int main89()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	//print89(arr);
	print89(arr, sizeof(arr) / sizeof(arr[0]));

	system("pause");
	return EXIT_SUCCESS;
}
void print(char* arr)
{
	//4.两种方法可以求出字符串的长度；第一种，使用strlen(const char*)，这个函数的参数就是char*指针类型参数；
	int len = strlen(arr);
	//5.第二种，使用字符串的结束标志\0；
	int i = 0;
	while (arr[i] != '\0')
	{
		i++;
	}
	printf("%d,%d\n", len, i);//11,11
}
int main90(void)
{
	char arr[] = "hello world";
	print(arr);

	//6.上面这个arr是字符串，有结束标志\0，可以不用传len；但下面这是个字符数组，就和int arr[]一样了，不能
		//用strlen，也没有\0，只能老老实实传递len，并且用sizeof计算长度。
	char arrCh[] = { 'h','e' };
	printf("%d\n", strlen(arrCh));//23，错误长度
	return 0;
}